#include "LPC11xx.h"
#include "wdt.h"

void wdt_reset(void)
{
  LPC_WDT->FEED = 0xAA;
  LPC_WDT->FEED = 0x55;
}

//初始化看门狗定时器，超时时间单位ms
void wdt_init(int timeout)
{
  //1. 启用WDT模块时钟，使用默认内部时钟源（12MHz）
  LPC_SYSCON->SYSAHBCLKCTRL |= 1 << 15;

  //2. 配置看门狗定时器分频系数
  // 看门定时器会固定进行4分频
  // 看门狗时钟频率 = 12MHz/12/4 = 250KHz
  LPC_SYSCON->WDTCLKDIV = 12;
  
  //3. 配置看门狗超时时间（1秒，不能小于255个时钟周期）
  LPC_WDT->TC = 250 * timeout;
  
  //4. 启用看门狗定时器，超时复位
  LPC_WDT->MOD = 3;
  
  //5. 第一次喂狗后，定时器启动
  wdt_reset();
}
